const { Article } = require("../models");
const {
  BadRequestError,
  UnauthorizedError,
  NotFoundError,
} = require("./errors");

/**
 * 自定义404错误
 */

/**
 * 请求成功success函数
 * @param res
 * @param message
 * @param data
 * @param code
 */
function success(res, message, data = {}, code = 200) {
  res.status(code).json({
    status: true,
    message,
    data,
  });
}

/**
 * 请求失败failure函数
 * @param res
 * @param error
 */
function failure(res, error) {
  if (error.name === "SequelizeValidationError") {
    const errors = error.errors.map((e) => e.message); //获取校验错误信息
    return res.status(400).json({
      status: false,
      message: "请求参数错误。",
      errors,
    });
  } else if (error.name === "BadRequestError") {
    return res.status(400).json({
      status: false,
      message: "请求参数错误。",
      errors: [error.message],
    });
  } else if (error.name === "UnauthorizedError") {
    return res.status(401).json({
      status: false,
      message: "未授权",
      errors: [error.message],
    });
  } else if (error.name === "NotFoundError") {
    return res.status(404).json({
      status: false,
      message: "资源不存在",
      errors: [error.message],
    });
  } else {
    return res.status(500).json({
      status: false,
      message: "服务器错误。",
      errors: [error.message],
    });
  }
}

module.exports = {
  NotFoundError,
  BadRequestError,
  UnauthorizedError,
  success,
  failure,
};
